home *** CD-ROM | disk | FTP | other *** search
/ Just Call Me Internet / Just Call Me Internet.iso / prog / atari / m2 / cat3src / cat / catedit.d < prev    next >
Text File  |  1997-10-26  |  14KB  |  419 lines

  1. DEFINITION MODULE CatEdit;
  2.  
  3. (*$Z+*)
  4.  
  5. FROM SYSTEM IMPORT ADDRESS;
  6.  
  7. FROM GrafBase   IMPORT  Rectangle;
  8.  
  9. FROM EditTypes  IMPORT searchPos, searchCount, searchDir, CAT;
  10. IMPORT EditTypes;
  11.  
  12. TYPE KillProcType = PROCEDURE(VAR ARRAY OF CHAR, ARRAY OF CHAR);
  13.                              (* Path, Name *)
  14. VAR KillProc : KillProcType;
  15.  
  16.     LL       : CARDINAL;
  17.  
  18. PROCEDURE SelectEditFont (wdw : INTEGER; font, fontSize : INTEGER);
  19. (* Setzt den neuen Font fr den Editor 
  20.  *)
  21.  
  22. (* Anzeige-Funktionen des Editors! *)
  23. PROCEDURE OpenEditBuffer (REF title, infoline : ARRAY OF CHAR;
  24.                           showInfo : BOOLEAN;
  25.                           buff : ADDRESS; buffLen : LONGCARD; 
  26.                           freeBuffer: BOOLEAN;
  27.                           isEnriched: BOOLEAN;
  28.                           font, fontSize : INTEGER; work : Rectangle;
  29.                           (* User-Proc Parameter *)
  30.                           useUserProc : BOOLEAN; 
  31.                           theUserProc, theUserRectProc,
  32.                           theDrawUserProc, theCloseProc,
  33.                           theKeyProc, theTopProc, 
  34.                           theUntopProc,thePrePrintProc : ADDRESS; (*!! Hier aufpassen!*)
  35.                           (* Edit-Parameter *)
  36.                       VAR wdwHandle : INTEGER) : BOOLEAN;
  37. (* ™ffnet einen Editor und liest Text aus Buffer *)
  38.  
  39. PROCEDURE CloseEditBuffer (wdw : INTEGER);
  40. (* Schliežt Nachrichtenfenster *)
  41.  
  42. PROCEDURE EditAbandonText (wdw : INTEGER);
  43. (* Verwirft alle Žnderungen und l„dt den Text neu nach Rckfrage 
  44.  *)
  45.  
  46. PROCEDURE EditReloadText (wdw : INTEGER);
  47. (* Verwirft alle Žnderungen und l„dt den Text neu ohne Rckfrage
  48.  *)
  49.  
  50. PROCEDURE ShowNewBuffer (wdw : INTEGER; 
  51.                          REF title, infoline : ARRAY OF CHAR;
  52.                          buff : ADDRESS; buffLen : LONGCARD;
  53.                          freeBuffer: BOOLEAN;
  54.                          isEnriched: BOOLEAN);
  55. (* Zeigt neuen Text im Anzeigefenster an! *)
  56.  
  57. PROCEDURE OpenEditor (REF path, FileName : ARRAY OF CHAR; New : BOOLEAN;
  58.                       (* User-Proc Parameter *)
  59.                       useUserProc : BOOLEAN; 
  60.                       theUserProc, theUserRectProc,
  61.                       theDrawUserProc, theCloseProc,
  62.                       theKeyProc, theTopProc,
  63.                       theUntopProc, thePrePrintProc : ADDRESS; (*!! Hier aufpassen!*)
  64.                       (* Edit-Parameter *)
  65.                       right : INTEGER;
  66.                       showInfo : BOOLEAN;
  67.                       wrap : BOOLEAN;
  68.                       num  : INTEGER;   (* Wird als interne Editornummer benutzt, falls nicht schon vergeben und > 0 *)
  69.                       VAR wdwHandle : INTEGER) : BOOLEAN;
  70.  
  71. (* ”ffnet einen Editor im Fenster. Font und Fontsize und gewnschte
  72.  * Workarea mssen bergeben werden, wdwHandle dieses Editors wird 
  73.  * im Erfolgsfall zurckgeliefert.
  74.  * šber die User-Procs kann man noch einen Bereich im Editor-Fenster
  75.  * festlegen, in denen Benutzerdefinierte Sachen dargestellt werden k”nnen.
  76.  * Die User-Routine wird angesprungen, falls ein Button-Event in diesem Bereich
  77.  * auftrat. Die RectProc wird nach jeder Gr”žen und Positions„nderung aufgerufen.
  78.  * Die DrawUserProc wird aufgerufen, wenn Fensterteile neu gezeichnet werden 
  79.  * mssen.
  80.  * !!! Im Moment ist es nur m”glich, einen Bereich am oberen Ende des Fensters 
  81.  * als UserBereich zu benutzen!!! 
  82.  * Die Parameter fr die Userprozeduren sind als Adressen aufgefhrt, damit es
  83.  * leichter ist, keine Userproc zu bergeben! Deshalb kann aber der Compiler
  84.  * das auch nicht berprfen, also Vorsicht beim Aufruf!
  85.  *)
  86.  
  87. PROCEDURE InstallUserDD (wdw: INTEGER;
  88.                          userDDGetMaxExts    : EditTypes.userDDGetMaxExtProc;
  89.                          userDDGetExt        : EditTypes.userDDGetExtProc;
  90.                          userDDGetExtName    : EditTypes.userDDGetExtNameProc;
  91.                          userDDGetSize       : EditTypes.userDDGetSizeProc;
  92.                          userDDGetData       : EditTypes.userDDGetDataProc);
  93. (* Installiert den DD-Server der Userprozedur 
  94.  *)
  95.  
  96. PROCEDURE EditPrint(wdw : INTEGER; block : BOOLEAN);
  97.  
  98. (* Druckt entweder den ganzen Text oder nur den markierten Block *)
  99.  
  100. PROCEDURE EditSave(wdw : INTEGER;REF path, FileName : ARRAY OF CHAR; takeName: BOOLEAN);
  101. (* nachfragen, wenn File schon vorhanden *)
  102.  
  103. PROCEDURE EditMerge(wdw : INTEGER; REF path, name : ARRAY OF CHAR);
  104.  
  105. (* Blockfunktionen *)
  106. PROCEDURE EditCut(wdw : INTEGER): BOOLEAN;
  107.  
  108. PROCEDURE EditCopy(wdw : INTEGER): BOOLEAN;
  109.  
  110. PROCEDURE EditPaste(wdw : INTEGER);
  111.  
  112. PROCEDURE EditClear(wdw : INTEGER);
  113.  
  114. PROCEDURE EditPasteFile (wdw: INTEGER; isFilter: BOOLEAN; REF path, name: ARRAY OF CHAR);
  115. (* Fgt einen Text mit Filename ein 
  116.  *)
  117.  
  118. PROCEDURE CloseEditor(wdw : INTEGER; force : BOOLEAN) : BOOLEAN;
  119. (* wird aufgerufen, wenn Editor geschlossen werden soll. Falls Text ge„ndert 
  120.  * wurde, wird nachgefragt und ggf. FALSE zurckgegeben.
  121.  * Bei force = TRUE wird nicht nachgefragt, sondern der Text gespeichert und
  122.  * in jedem Fall TRUE zurckgegeben.
  123.  *)
  124.  
  125. PROCEDURE IsEditTop(wdw : INTEGER): BOOLEAN;
  126. (* fragt nach, ob ein Editor das Top-Window hat
  127.  *)
  128.  
  129. PROCEDURE EditChar(wdw, vdiH : INTEGER; special : ADDRESS; taste: INTEGER; char, scan : CHAR; kstate : BITSET): BOOLEAN;
  130.  
  131. PROCEDURE ClickInEditWindow(win, vdiH : INTEGER; special : ADDRESS; x,y : INTEGER; kstate, buts : BITSET; clicks : INTEGER): BOOLEAN;
  132.  
  133. PROCEDURE EditAbandonText (wdw: INTEGER);
  134. (* Fragt nach, ob die letzte Fassung des Textes geladen werden soll und macht das 
  135.  * dann
  136.  *)
  137.  
  138. PROCEDURE GetBlock (wdw : INTEGER; unChanged: BOOLEAN; withCrs : BOOLEAN; VAR adr : ADDRESS; VAR buffLen : LONGCARD) : BOOLEAN;
  139. (* Kopiert den gesamten Block an einem Stck 
  140.  * in einen Speicherbereich. Nur am Absatzende wird ein CR/LF 
  141.  * angefgt.
  142.  * Dieser Bereich wird von dieser Routine angelegt und muž
  143.  * bei Nichtgebrauch wieder freigegeben werden
  144.  *)
  145.  
  146. PROCEDURE PutLine(win : INTEGER; adr : ADDRESS; len : CARDINAL) : BOOLEAN; (* Voll? *)
  147. (* Fr Floskeltasten und „hnliches
  148.  *)
  149.  
  150. PROCEDURE QuoteSomething (win : INTEGER; REF pre : ARRAY OF CHAR; 
  151.                           adr : ADDRESS; len : CARDINAL; width: INTEGER) : BOOLEAN; (* Voll? *)
  152. (* Fr Quoten. 
  153.  *)
  154.  
  155.  
  156. (* Umfangreiche Such- und Ersetzroutinen. 
  157.  *
  158.  * Start:       aktuelle Position, Top, Ende
  159.  * Richtung:    nach oben, nach unten
  160.  * Anzahl:      erstes, ntes, letztes Vorkommen
  161.  * Modusflags:  grožklein, nurWort
  162.  *)
  163. PROCEDURE Search (wdw : INTEGER; w : ARRAY OF CHAR; pos : searchPos; 
  164.                   direction : searchDir; count : searchCount; 
  165.                   num (* wird nur bei count = nmal benutzt *) : INTEGER;
  166.                   ignoreCase : BOOLEAN; onlyWord : BOOLEAN;
  167.                   again : BOOLEAN): BOOLEAN;
  168. (* Nur suchen, gefundene Stelle wird angezeigt *)
  169.  
  170. PROCEDURE SearchAndReplace (wdw : INTEGER; w, r : ARRAY OF CHAR; pos : searchPos; 
  171.                   direction : searchDir; count : searchCount; 
  172.                   num (* wird nur bei count = nmal benutzt *) : INTEGER;
  173.                   ignoreCase : BOOLEAN; onlyWord : BOOLEAN; 
  174.                   ask: BOOLEAN; again : BOOLEAN): BOOLEAN;
  175. (* Suchen und ersetzen, evtl. mit Rckfrage 
  176.  *)
  177.  
  178. PROCEDURE BlockIsMarked (wdw : INTEGER) : BOOLEAN;
  179. (* Ist Ersatz fr EditMenu(); Das MUSS in CAT gemacht werden! 
  180.  *)
  181.  
  182. PROCEDURE ClickIsInBlock (wdw : INTEGER; x, y: INTEGER) : BOOLEAN;
  183. (* Gibt zurck, ob die Position x, y im Blockbereich liegt
  184.  *)
  185.  
  186. PROCEDURE GetEditVDIHandle (wdw : INTEGER; VAR hdl : INTEGER);
  187. (* Liefert Handle der Workstation des Fensters *)
  188.  
  189. (*$? NOT CAT:
  190. (* neue Funktionen fr Eddix *)
  191. PROCEDURE ToLineNr (wdw: INTEGER; nr : LONGINT);
  192. (* Geht zur Zeile nr, falls m”glich *)
  193.  
  194. PROCEDURE GetCompInfo (wdw: INTEGER; VAR fname: ARRAY OF CHAR; 
  195.                        VAR saved: BOOLEAN): BOOLEAN;
  196. (* Liefert den kompletten Filenamen, falls das Fenster ein Editor
  197.  * ist
  198.  *)
  199.  
  200. PROCEDURE FileInfos (wdw : INTEGER; VAR lines, bytes : LONGCARD; 
  201.                      VAR edits    : INTEGER;
  202.                      VAR totalMem : LONGCARD;
  203.                      VAR fName : ARRAY OF CHAR) : BOOLEAN;
  204. (* Gibt Informationen ber den aktuellen Text raus
  205.  *)
  206.  
  207. PROCEDURE SetListMode (wdw: INTEGER);
  208. (* Setzt den Listenmodus fr ein Fenster. Dabei wird der Cursor
  209.  * ausgeschaltet, das Fenster auf Readonly gesetzt und der Listen-
  210.  * modus angeschaltet
  211.  *)
  212.  
  213. PROCEDURE SetListProc (wdw: INTEGER; listProc : ADDRESS): BOOLEAN;
  214. (* Setzt die ListModeProc fr ein Fenster. Um alles einzuschalten, 
  215.  * sollte man einfach SetListMode aufrufen.
  216.  *)
  217.  
  218. PROCEDURE FileIsEditor (REF fname: ARRAY OF CHAR; VAR wdw: INTEGER): BOOLEAN;
  219. (* Gibt bei einem bergebenem Dateinamen zurck, ob diese Datei
  220.  * schon geladen ist. Beachtet auch Case-Sensitivit„t von Filesystemen
  221.  * Im Falle von TRUE wird in wdw das Fensterhandle des Editors 
  222.  * zurckgeliefert
  223.  *)
  224.  
  225. *)
  226.  
  227. PROCEDURE CloseAllEditors (force : BOOLEAN) : BOOLEAN;
  228. (* schliežt alle Editoren, gibt TRUE zurck, falls
  229.  * erfolgreich 
  230.  * Wenn force = TRUE ist, dann werden alle Texte ohne Rckfrage 
  231.  * gespeichert!
  232.  *)
  233.  
  234. PROCEDURE GetEditNumber (wdw : INTEGER) : INTEGER;
  235. (* Gibt die interne Nummer des Editors zurck *)
  236.  
  237. PROCEDURE EditSaveWdwPos (wdw : INTEGER);
  238. (* Sichert die Position des Editors in den 
  239.  * Configvariablen
  240.  *)
  241.  
  242. PROCEDURE EditSavePos();
  243. (* Sichert die Position und den Inhalt aller offenen Editorfenster
  244.  * (nicht ReadOnly-Fenster 
  245.  *)
  246.  
  247. PROCEDURE EditRestorePos();
  248. (* Restauriert den Inhalt und die Position der EditorFenster
  249.  *)
  250.  
  251. PROCEDURE EditSetOffset (wdw: INTEGER; offset: INTEGER);
  252. (* Setzt den Cursor an die Position offset im aktuellen Buffer
  253.  * Wird nur fr CAT gebraucht im Messagemanager!
  254.  *)
  255.  
  256. PROCEDURE EditSetLineAndRow (wdw: INTEGER; line: LONGINT; row: INTEGER);
  257. (* Setzt den Cursor an die angegebene Position, falls m”glich
  258.  *)
  259.  
  260. PROCEDURE DoUndo (wdw : INTEGER); 
  261. (* Fhrt Undo durch *)
  262.  
  263. PROCEDURE MarkAll (wdw : INTEGER);
  264. (* Markiert den ganzen Text als Block *)
  265.  
  266. PROCEDURE MarkWord (wdw : INTEGER);
  267. (* Markiert das Wort beim Cursor als Block *)
  268.  
  269. PROCEDURE SetBlockStart (wdw : INTEGER);
  270. (* Setzt den Blockstart an der aktuellen 
  271.  * Cursorposition 
  272.  *)
  273.  
  274. PROCEDURE SetBlockEnd (wdw : INTEGER);
  275. (* Setzt das Blockende an der aktuellen
  276.  * Cursorposition 
  277.  *)
  278.  
  279. PROCEDURE SetMark (wdw : INTEGER; number : INTEGER);
  280. (* Setzt Marke number an Cursorposition 
  281.  *)
  282.  
  283. PROCEDURE ClearBlock (wdw : INTEGER);
  284. (* L”scht Blockmarkierung 
  285.  *)
  286.  
  287. PROCEDURE ToMark (wdw : INTEGER; number : INTEGER);
  288. (* Springt zur Marke number 
  289.  *)
  290.  
  291. PROCEDURE ToBlockStart (wdw : INTEGER);
  292. (* Springt zum Blockanfang 
  293.  *)
  294.  
  295. PROCEDURE ToBlockEnd (wdw : INTEGER);
  296. (* Springt zum Blockende
  297.  *)
  298.  
  299. PROCEDURE SetTabsize (wdw : INTEGER; size : INTEGER);
  300. (* Setzt Tabsize auf size 
  301.  *)
  302.  
  303. PROCEDURE GetTabsize (wdw : INTEGER; VAR size : INTEGER);
  304. (* Setzt Tabsize auf size 
  305.  *)
  306.  
  307. PROCEDURE SetMargins (wdw : INTEGER; right : INTEGER; umbruch : BOOLEAN);
  308. (* Setzt die R„nder und man kann den Umbruch ein-
  309.  * und ausschalten 
  310.  *)
  311.  
  312. PROCEDURE GetMargins (wdw : INTEGER; VAR right : INTEGER);
  313. (* Gibt den eingestellten rechten Rand zurck.
  314.  *)
  315.  
  316. (* Modus-Einstellungen *)
  317. TYPE editMode = (insMode, indentMode, autoBackup, wrapMode, tabMode, crMode, roMode, effMode, errorMode);
  318.  
  319. PROCEDURE ToggleMode (wdw : INTEGER; mode : editMode);
  320. (* Schaltet einen Zustand um *)
  321.  
  322. PROCEDURE SetMode (wdw : INTEGER; mode : editMode; val : BOOLEAN);
  323. (* Setzt einen Zustand 
  324.  *)
  325.  
  326. PROCEDURE GetMode (wdw : INTEGER; mode : editMode) : BOOLEAN;
  327. (* Fragt einen Zustand ab.
  328.  *)
  329.  
  330. (*$? NOT CAT:
  331. (* Fr Compilierung ein paar Prozeduren *)
  332. PROCEDURE CompileText (wdw : INTEGER);
  333.  
  334. PROCEDURE ShowError (wdw : INTEGER);
  335.  
  336. PROCEDURE SetError (wdw: INTEGER; errorLine : LONGINT; 
  337.                     errorRow : INTEGER; REF errorMsg : ARRAY OF CHAR;
  338.                     show : BOOLEAN);
  339.  
  340. (* Block bearbeiten wie in GME *)
  341. PROCEDURE IndentBlock (wdw : INTEGER);
  342. *)
  343.  
  344. (* Block Transformationen *)
  345. PROCEDURE BlockUp (wdw : INTEGER);
  346.  
  347. PROCEDURE BlockDown (wdw : INTEGER);
  348.  
  349. PROCEDURE BlockCapitals (wdw : INTEGER);
  350.  
  351. PROCEDURE BlockSwap (wdw : INTEGER);
  352.  
  353. PROCEDURE BlockRot18 (wdw : INTEGER);
  354.  
  355. PROCEDURE BlockRot (wdw : INTEGER);
  356.  
  357. PROCEDURE BlockDecode (wdw : INTEGER);
  358.  
  359. PROCEDURE BlockMirror (wdw : INTEGER);
  360.  
  361. PROCEDURE BlockProtect (wdw : INTEGER);
  362.  
  363. PROCEDURE UndoPossible (wdw : INTEGER): BOOLEAN;
  364.  
  365. PROCEDURE GetTextLineLength (wdw : INTEGER; line: LONGINT; VAR len: INTEGER): BOOLEAN;
  366. (* Liefert die L„nge der Zeile line im zum wdw geh”renden Editor zurck.
  367.  * FALSE: Fenster ist kein Editor oder Zeile nicht vorhanden
  368.  *)
  369.  
  370. PROCEDURE GetTextLine (wdw: INTEGER; line : LONGINT; 
  371.                        VAR str : ARRAY OF CHAR; VAR len : INTEGER): BOOLEAN;
  372. (* Liefert die Zeile line im zum wdw geh”renden Editor zurck.
  373.  * FALSE: Fenster ist kein Editor oder Zeile nicht vorhanden
  374.  *)
  375.  
  376. PROCEDURE GetEditBuffer (wdw: INTEGER; VAR adr : ADDRESS; VAR len : INTEGER): BOOLEAN;
  377. (* Liefert die Adresse des ersten Buffers im zum wdw geh”renden Editor zurck.
  378.  * In len steht der benutzte Speicherplatz.
  379.  * FALSE: Fenster ist kein Editor 
  380.  *)
  381.  
  382. PROCEDURE AskForSave (wdw : INTEGER);
  383. (* Fragt nach, falls der Text ver„ndert wurde, ob dieser gesichert 
  384.  * werden soll.
  385.  *)
  386.  
  387. PROCEDURE ToEnd(wdw : INTEGER);
  388. (* Setzt den Cursor an das Ende eines Textes 
  389.  *)
  390.  
  391. PROCEDURE GetWildChars (VAR one, all: CHAR);
  392. (* Holt die Wildcardzeichen 
  393.  *)
  394.  
  395. PROCEDURE SetWildChars (one, all: CHAR);
  396. (* Setzt die Wildcardzeichen 
  397.  *)
  398.  
  399. PROCEDURE CheckWildAssign (VAR search, repl: ARRAY OF CHAR): BOOLEAN;
  400. (* Prft die Konsistenz von Wildcards und ihren Gegenstcken im Such-
  401.  * und Ersetzstring
  402.  *)
  403.  
  404. PROCEDURE MarkMultiple (wdw: INTEGER);
  405. (* Startet den multiplen Blockmarkiermodus 
  406.  *)
  407.  
  408. (*$? NOT CAT:
  409. PROCEDURE ReadShortkeyFile(REF fname: ARRAY OF CHAR);
  410. (* Liest eine Krzeldatei ein 
  411.  *)
  412.  
  413. PROCEDURE FreeShortkeyList ();
  414. (* Gibt eine Krzeldatei wieder frei 
  415.  *)
  416. *)
  417.  
  418. END CatEdit.
  419.